<?php


/**
 * @brief Klasa pomocnika widoków wyświetlającego czas do jakiegoś wydarzenia
 * 
 */
class Zend_View_Helper_TimeToEnd extends Zend_View_Helper_Abstract {
    
    /**
     * @brief Metoda zamieniająca wprowadzoną datę na czas do jej nastania.
     * 
     * Z wprowadzonej daty generowany jest timestamp i z niego wyliczany jest 
     * czas do nastania wprowadzonej daty. Możliwe jest również otrzymania 
     * czasu jaki upłynął od rozpatrywanej daty. Zwracany okres może być w 
     * przedziale od sekundy do dni. 
     * 
     * @param string $date
     * @param bool $extended
     * @return string 
     */
    public function timeToEnd($date, $extended = FALSE){

        $now = Zend_Date::now();
        $end = new Zend_Date($date);
        $time = $end->getTimestamp()-$now->getTimestamp();
        
        
        if($time < 0 ){
            $suffix = ' temu';
            $time = -$time;
        } 

        $chunks = array(
            array(60 * 60 * 24 , 'dni'),
            array(60 * 60 , 'godz.'),
            array(60 , 'min.'),
            array(1 , 's'),
        );


        for ($i = 0, $j = count($chunks); $i < $j; $i++) {
            $seconds = $chunks[$i][0];
            $name = $chunks[$i][1];
            if (($count = floor($time / $seconds)) != 0) {
                break;
            }
        }

        $print = ($count == 1) ? '1 '.$name : "$count {$name}";
        if(isset ($suffix)) $print .= $suffix;
        return $print;
    }
    
}
